全部文档

服务端订阅最佳实践

服务地址

连接协议 证书 地址 端口 说明
GRPC 202.105.134.22 8901

创建订阅客户端

见用户指南-服务端订阅。

订阅规则

数据格式约定

syntax = "proto3";
package subsgrpc;
service GrpcSubscriberMsg {
    rpc ConsumerData(stream SubscriberMsgReq) returns (stream MessageResponse){}
}
message SubscriberMsgReq {
    string AccessKeyId = 1;  //用户accessKeyid
    int32 Signature = 2;  //保留字段
    int32 SignatureNonce = 3; //保留字段
    int32  groupid    = 4; //消费组ID
    int32 pid = 5;  //产品ID
}
message MessageResponse {
    int32  code       = 1;
    string  errmsg = 2;
    bytes content  = 3;  //订阅消息内容
}

上面代码块是protobuf的内容,SubscriberMsgReq是订阅请求的结构,包含用户信息和要订阅消息的产品ID;MessageResponse是订阅返回,其中content是一个字节数组,需要做json反序列化成如下结构

{
    "productId" : 1001,
    "deviceId"  : 100111,
    "messageType" : 1,  //1表示上下线消息,2表示设备上报消息
    "params" : {"test":1, "test1":"hello"},  //如果messageType是2,params里面是上报数据的内容
    "online" : true,  //如果messageType是1, true表示上线,false表示离线
}

订阅方式

  • 订阅采用grpc双向流的方式,客户端发一次数据,服务端对应返回一条消息,如果目前没有最新消息会阻塞,直到有该订阅相关消息产生。
  • 第一次发送的消息会鉴权,后面就会跳过鉴权。
  • 因为无消息会阻塞返回,所以建议客户端加上心跳,防止连接被断开。
  • 不同的消费组订阅同一个产品的消息,相互是独立消费的。

results matching ""

    No results matching ""